package com.own.demo.lwf.common.string;/**
 * @author liwenfeng
 * @date 2022/8/13 0013
 * @apinote
 */

import java.text.MessageFormat;

/**
 * @version v1.0
 * @Description:
 * 1.String.format：填充占位符（%s:字符串，%d:整数，等）
 * 2.String.valueOf():其他任何类型转为string
 * 3.String.join():给每个元素添加分隔符
 * 4.str1.copyValueOf(str1,2,6):str1从索引为2处往后截取6位放到str2中
 * 5.length:返回字符长度
 * 6.charAt:返回索引下的字符
 * 7.toLowerCase/toUpperCase:转为小写大写
 * 8.toCharArray:转为字符数组
 * 9.trim：去前后空白,中间的不去
 * 10.concat:字符串接结尾
 * 11.compareTo/compareToIgnoreCase/contentEquals:比较大小。0为相等，正为大于负为小于，从第一位开始比若相同返回不同的长度差值；contentEquals返回值为boolean
 * 12.subString:截取
 * 13.endsWith/startsWith:以...开头/结尾  或是否以某索引出开头/结尾
 * 14.contains：是否包含
 * 15.indexOf/lastIndexOf:返回该字符第一次出现的索引/返回最后一次出现的索引
 * 16.replace/replaceAll:替换
 * 17.matches:是否匹配给定正则表达式
 * 18.split:根据给给定的正则表达式拆分(不超过第二个参数个,超过放最后一个）
 * 19.getChars:从前一个string指定位置截取放到后一个char[]指定位置
 * @Author Administrator
 * @Date 2022/8/13 0013 9:56
 * @copyright 李文峰
 */
public class StringDemo {
    public static void main(String[] args) {
        String s = " Hello  li wenfeng   ";
        int ii = 9649945;

        // 1.format：填充占位符（%s:字符串，%d:整数，等）
        System.out.println(String.format("%s今年%d岁。", "小李", 30));
        System.out.println(MessageFormat.format("你好{0}，我是{1}", "小明", "小红"));

        // 2.valueOf:其他任何类型转为string
        System.out.println(String.valueOf(ii));

        // 3.String.join():给每个元素添加分隔符
        String[] arr1 = {"2023", "07", "22"};
        System.out.println(String.join("-", "2023", "07", "22"));
        System.out.println(String.join("-", arr1));

        // 4.str1.copyValueOf(str1,2,6):str1从索引为2处往后截取6位放到str2中
        char[] str1 = {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'};
        String str2 = "";
        System.out.println(str2.copyValueOf(str1));
        System.out.println(str2.copyValueOf(str1, 2, 6));

        // 5.length:返回字符长度
        System.out.println(s.length());

        // 6.charAt:返回索引下的字符
        System.out.println(s.charAt(8));

        // 7.toLowerCase/toUpperCase:转为小写大写
        System.out.println(s.toUpperCase());

        // 8.toCharArray:转为字符数组
        String s9 = "我是谁123";
        char[] arr = s9.toCharArray();
        for (char a : arr) {
            System.out.println(a);
        }

        // 9.trim：去前后空白,中间的不去
        System.out.println(s.trim());

        // 10.concat:字符串接结尾
        System.out.println(s.concat("拼在结尾"));

        // 11.compareTo/compareToIgnoreCase/contentEquals:比较大小。0为相等，正为大于负为小于，从第一位开始比若相同返回不同的长度差值
        String s2 = "654";
        String s3 = "611";
        System.out.println(s2.compareTo(s3));
        System.out.println(s2.compareToIgnoreCase(s3));
        // 返回的是boolean
        System.out.println(s2.contentEquals(s3));

        // 12.subString:截取
        String s4 = "dgfufoaiwehi";
        System.out.println(s4.substring(2, 6));
        System.out.println(s4.substring(3));

        // 13.endsWith/startsWith:以...开头/结尾  或是否以某索引出开头/结尾
        System.out.println(s4.endsWith("wehi"));
        System.out.println(s4.endsWith("wei"));
        System.out.println(s4.startsWith("foa", 4));

        // 14.contains：是否包含
        System.out.println(s4.contains("we"));

        // 15.indexOf/lastIndexOf:返回该字符第一次出现的索引/返回最后一次出现的索引
        System.out.println(s4.indexOf("ai"));
        System.out.println(s4.indexOf("i"));

        // 16.replace/replaceAll:替换
        String s5 = "李文峰";
        String s6 = ",135dfa84dff694,,,";
        System.out.println(s5.replace("文峰", "蔚泽"));
        System.out.println(s6.replaceAll("\\d+", "数字").replaceAll("^,|,,,$", ""));

        // 20230721转为2023-07-21
        String s61 = "20230721";
        // 每隔四个拦一个-
        String s62 = s61.replaceAll("(.{4})", "$1-");
        String s63 = s62.replaceAll("(.{7})", "$1-");
        String s64 = s63.substring(0, s63.length() - 1);
        System.out.println("replaceAll转20230721：" + s62);
        System.out.println("replaceAll转20230721：" + s63);
        System.out.println("replaceAll转20230721：" + s64);


        // 17.matches:是否匹配给定正则表达式
        String s7 = "12345";
        System.out.println(s7.matches("\\d+"));

        // 18.split:根据给给定的正则表达式拆分(不超过第二个参数个,超过放最后一个）
        String s8 = "hello|my|girl";
        String[] strings = s8.split("\\|");
        String[] strings2 = s8.split("\\|", 2);
        for (int i = 0; i < strings.length; i++) {
            System.out.println(strings[i]);
        }
        for (int i = 0; i < strings2.length; i++) {
            System.out.println(strings2[i]);
        }

        // 19.getChars:从前一个string指定位置截取放到后一个char[]指定位置
        String s10 = "dfgqwgegfy";
        char[] m = new char[10];
        s10.getChars(1, 4, m, 2);
        int i = 0;
        for (char val : m) {
            System.out.println("当前所有位置" + (i++) + ":" + val);
        }
    }
}
